/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Dao;

import Beans.Filmaciones;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;


/**
 *
 * @author Alex
 */
public class FilmacionesDao {

    Connection con=null;
    
    public void setConection( Connection con){
        this.con = con;
    }
    
    public boolean existe_Filmacion(Filmaciones filmaciones) throws SQLException
	 {
		ResultSet re=null;
		PreparedStatement ps=null;
		boolean bandera=false;
		try
		{
			ps= con.prepareStatement("Select * from filmaciones where id_filmacion=?");
                        ps.setString(1, filmaciones.getIdfilmacion());
			re=ps.executeQuery();
			while(re.next())
			{
				bandera=true;
			}
		}
		catch(SQLException ignore)
		{

		}
		finally
		{
			if(re!=null)
			{
				re.close();
			}
			if(ps!=null)
			{
				ps.close();
			}
		}
		return bandera;
	}
	
	//Adicionar elementos a la BD

	public void newFilmacion(Filmaciones filmaciones) throws SQLException
	{
		if(existe_Filmacion(filmaciones))
			throw new SQLException("La Filmacion Ya Existe");

		PreparedStatement pstmt = null;
		try
		{
			pstmt = con.prepareStatement("INSERT INTO filmaciones VALUES(?,?,?,?,?,?,?)");
			pstmt.setString(1,filmaciones.getIdfilmacion());
			pstmt.setString(2,filmaciones.getNombrefilmacion());
                        pstmt.setDate(3,filmaciones.getFechafilmacion());
                        pstmt.setString(4,filmaciones.getDirectorfilmacion());
                        pstmt.setString(5,filmaciones.getCategoriafilmacion());
                        pstmt.setString(6,filmaciones.getPaisfilmacion());
                        pstmt.setString(7,filmaciones.getIdproductora());
                        pstmt.executeUpdate();
		}
		finally
		{
			if(pstmt != null)
				pstmt.close();
		}
	}
        
        public List listar()throws SQLException{
            	ResultSet re=null;
		PreparedStatement ps=null;
		List lista = new LinkedList();
		try
		{
			ps=(PreparedStatement) con.prepareStatement("Select * from filmaciones");
                        re=ps.executeQuery();
			while(re.next())
			{
				lista.add(Filmaciones.load(re));
			}
		}
		catch(SQLException ignore)
		{

		}
		finally
		{
			if(re!=null)
			{
				re.close();
			}
			if(ps!=null)
			{
				ps.close();
			}
		}
		return lista;
        }
        
        
        public List buscar(int tipo, String parametro)throws SQLException{
            	ResultSet re=null;
		PreparedStatement ps=null;
		List lista = new LinkedList();
                String sql="";
		try
		{
                    if(tipo==1)
                        sql="Select * from filmaciones where id_filmacion like ?"; 
                     if(tipo==2)
                        sql="Select * from filmaciones where nom_filmacion like ?"; 
                    
			ps=(PreparedStatement) con.prepareStatement(sql);
                        ps.setString(1,parametro);
                        re=ps.executeQuery();
			while(re.next())
			{
				lista.add(Filmaciones.load(re));
			}
		}
		catch(SQLException ignore)
		{

		}
		finally
		{
			if(re!=null)
			{
				re.close();
			}
			if(ps!=null)
			{
				ps.close();
			}
		}
		return lista;
        }
        
        public void eliminar(String cod)throws SQLException{
                PreparedStatement pstmt = null;
		try
		{
			pstmt =con.prepareStatement("delete from filmaciones where id_filmacion=?");
			pstmt.setString(1,cod);
			pstmt.executeUpdate();
		}
		finally
		{
			if(pstmt != null)
				pstmt.close();
		}
        }
        
        public void modificar(Filmaciones p)throws SQLException{
            

		PreparedStatement pstmt = null;
		try
		{
			pstmt =con.prepareStatement("Update filmaciones set nom_filmacion = ?, fecha_filmacion = ?, director_filmacion, pais_filmacion = ?, categoria_filmacion=? where id_filmacion = ?");
			pstmt.setString(2,p.getNombrefilmacion());
                        pstmt.setDate(3,p.getFechafilmacion());
                        pstmt.setString(4,p.getDirectorfilmacion());
                        pstmt.setString(5,p.getPaisfilmacion());
                        pstmt.setString(6,p.getCategoriafilmacion());
                        pstmt.setString(7,p.getIdproductora());
                        pstmt.executeUpdate();
		}
		finally
		{
			if(pstmt != null)
				pstmt.close();
		}
            
        }
        
        public Filmaciones obtener(String cod)throws SQLException{
            ResultSet re=null;
		PreparedStatement ps=null;
		Filmaciones p = new Filmaciones();
		try
		{
			ps=con.prepareStatement("Select * from filmaciones where id_filmacion=?");
                        re=ps.executeQuery();
			while(re.next())
			{
				p = Filmaciones.load(re);
			}
		}
		catch(SQLException ignore)
		{

		}
		finally
		{
			if(re!=null)
			{
				re.close();
			}
			if(ps!=null)
			{
				ps.close();
			}
		}
		return p;
        }
        public void setActores(int fid, int[] actores) throws SQLException
        {
             PreparedStatement pstmt = null;
		try
		{
                    pstmt = con.prepareStatement("INSERT INTO filmaciones_por_actor(id_filmacion,id_actor) VALUES(?,?)");
                    pstmt.setInt(1, fid);
                    for(int i=0;i<actores.length;i++)
                    {    
                        if (actores[i] != 0)
                        {
                            pstmt.setInt(2, actores[i]);
                            System.out.print(pstmt.toString());
                            pstmt.executeUpdate();
                            System.out.print("EXECUTED");
                        }
                    }
                    
		}
		finally
		{
			if(pstmt != null)
				pstmt.close();
		}
        }
        public void setExtras(int fid, int[] extras) throws SQLException
        {
             PreparedStatement pstmt = null;
		try
		{
                    pstmt = con.prepareStatement("INSERT INTO filmaciones_por_extras(id_filmacion,id_extra) VALUES(?,?)");
                    pstmt.setInt(1, fid);
                    for(int i=0;i<extras.length;i++)
                    {    
                        if (extras[i] != 0)
                        {
                            pstmt.setInt(2, extras[i]);
                            System.out.print(pstmt.toString());
                            pstmt.executeUpdate();
                            System.out.print("EXECUTED");
                        }
                        
                    }
                    
		}
		finally
		{
			if(pstmt != null)
				pstmt.close();
		}
        }
        
        
        
         public Filmaciones getFilmaciones(String id)throws SQLException{
            	ResultSet re=null;
		PreparedStatement ps=null;
		Filmaciones p = new Filmaciones();
		try
		{
			ps=con.prepareStatement("Select * from filmaciones where id_filmacion=?");
                        ps.setString(1, id);
                        re=ps.executeQuery();
			if(re.next())
			
				p = Filmaciones.load(re);
			
		}
		catch(SQLException ignore)
		{

		}
		finally
		{
			if(re!=null)
			{
				re.close();
			}
			if(ps!=null)
			{
				ps.close();
			}
		}
		return p;
        }
            public static Filmaciones load(ResultSet filas) throws Exception{

       try {

            Filmaciones e = new Filmaciones();
            e.setIdfilmacion(filas.getString("idfilmacion"));
            e.setNombrefilmacion(filas.getString("nomfilmacion"));
            e.setFechafilmacion(filas.getDate("fechafilmacion"));
            e.setDirectorfilmacion(filas.getString("directorfilmacion"));
            e.setPaisfilmacion(filas.getString("paisfilmacion"));
            e.setCategoriafilmacion(filas.getString("categoriafilmacion"));
            e.setIdproductora(filas.getString("idproductora"));
            return e;
        } catch (SQLException ex) {
            throw new Exception("Error en la Consulta del Film:\n" + ex.getMessage());
        }

    }
    
}
